92df52f17a98f8ee1e0f52926c4895f69c14ac0b,src/edu/stanford/nlp/util/MetaClass.java,MetaClass,cast,#String#Type#,549

Before Change


      params = pt.getActualTypeArguments();
      clazz = (Class <?>) pt.getRawType();
    }else{
      clazz = type2class(type);
      throw new IllegalArgumentException("Cannot cast to type (unhandled type): " + type);
    }
    //--Cast
    if(String.class.isAssignableFrom(clazz)){
      // (case: String)
      return (E) value;
    }else if(Boolean.class.isAssignableFrom(clazz) || boolean.class.isAssignableFrom(clazz)){
      //(case: boolean)
      if("1".equals(value)){ return (E) new Boolean(true); }
      return (E) new Boolean( Boolean.parseBoolean(value) );
    }else if(Integer.class.isAssignableFrom(clazz) || int.class.isAssignableFrom(clazz)){
      //(case: integer)
      try {

After Change


    }else if(Boolean.class.isAssignableFrom(clazz) || boolean.class.isAssignableFrom(clazz)){
      //(case: boolean)
      if("1".equals(value)){ return (E) Boolean.TRUE; }
      return (E) Boolean.valueOf(Boolean.parseBoolean(value));
    }else if(Integer.class.isAssignableFrom(clazz) || int.class.isAssignableFrom(clazz)){
      //(case: integer)
      try {
        return (E) new Integer(Integer.parseInt(value));
      } catch (NumberFormatException e) {
        return (E) new Integer((int) Double.parseDouble(value));
      }
    }else if(Long.class.isAssignableFrom(clazz) || long.class.isAssignableFrom(clazz)){
      //(case: long)
      try {
        return (E) new Long(Long.parseLong(value));
      } catch (NumberFormatException e) {
        return (E) new Long((long) Double.parseDouble(value));
      }
    }else if(Float.class.isAssignableFrom(clazz) || float.class.isAssignableFrom(clazz)){
      //(case: float)
      if(value == null){ return (E) new Float(Float.NaN); }
      return (E) new Float(Float.parseFloat(value));
    }else if(Double.class.isAssignableFrom(clazz) || double.class.isAssignableFrom(clazz)){
      //(case: double)
      if(value == null){ return (E) new Double(Double.NaN); }
      return (E) new Double(Double.parseDouble(value));
    }else if(Short.class.isAssignableFrom(clazz) || short.class.isAssignableFrom(clazz)){
      //(case: short)
      try {
        return (E) new Short(Short.parseShort(value));
      } catch (NumberFormatException e) {
        return (E) new Short((short) Double.parseDouble(value));
      }
    }else if(Byte.class.isAssignableFrom(clazz) || byte.class.isAssignableFrom(clazz)){
      //(case: byte)
      try {
        return (E) new Byte(Byte.parseByte(value));
      } catch (NumberFormatException e) {
        return (E) new Byte((byte) Double.parseDouble(value));
      }
    }else if(Character.class.isAssignableFrom(clazz) || char.class.isAssignableFrom(clazz)){
      //(case: char)
      return (E) new Character((char) Integer.parseInt(value));
    }else if(java.util.Date.class.isAssignableFrom(clazz)){
      //(case: date)
      try {
        return (E) new Date(Long.parseLong(value));
      } catch (NumberFormatException e) {
        return null;
      }
    } else if(java.util.Calendar.class.isAssignableFrom(clazz)){
      //(case: date)
      try {
        Date d = new Date(Long.parseLong(value));
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(d);
        return (E) cal;
      } catch (NumberFormatException e) {
        return null;
      }
    } else if(File.class.isAssignableFrom(clazz)){
      return (E) new File(value);
    } else if(Class.class.isAssignableFrom(clazz)){
      try {
        return (E) Class.forName(value);
      } catch (ClassNotFoundException e) {
        return null;
      }
    } else if(clazz.isArray()){
      if(value == null){ return null; }
      Class <?> subType = clazz.getComponentType();
      // (case: array)
      String[] strings = decodeArray(value);
      Object[] array = (Object[]) Array.newInstance(clazz.getComponentType(), strings.length);
      for(int i=0; i<strings.length; i++){
        array[i] = cast(strings[i], subType);
      }
      return (E) array;
    } else if (Map.class.isAssignableFrom(clazz)) {
      return (E) decodeMap(value);
    } else if(clazz.isEnum()){
      // (case: enumeration)
      Class c = (Class) clazz;